A network storage controller is a system device which controls storage and retrieval of data on a network. An example of a network storage controller is a storage server, which is a processing system that stores and retrieves data on behalf of one of more clients on a network. The network storage controller includes an operating system that can store and retrieve data as blocks on a disk or other storage device. The operating system can alternatively store and retrieve the data as logical files from the disk or other storage device.
A network storage controller sometimes manages data in a group of non-volatile mass storage devices such as magnetic or optical disks. Such mass storage devices may be organized into groups of drives, such as into a redundant array of independent disks (RAID). A network storage controller typically includes memory for buffering data to be read from and written to and from the mass storage system. Typical network storage controllers implement the buffer as dynamic random access memory (DRAM).
The non-volatile mass storage devices may be aggregated and divided into volumes including logical units, each identified by a logical unit number (LUN). One or more hosts (e.g., clients) may access the logical units via a network, such as by mapping to the logical units and reading from and writing to the logical units as virtual mass storage devices. Data is stored to and retrieved from the logical units by the hosts as though the logical units were locally attached to the hosts as mass storage devices.
Typically, a logical unit is mapped to a host initiator using a protocol such as Fibre Channel Protocol (FCP) or internet Small Computer System Interface (iSCSI). Mapping can be accomplished by using an initiator group “igroup” which is a data structure used to associate a host's iSCSI Qualified Name (IQN) with a logical unit so that the host can access the logical unit. When the host establishes a connection to the network storage controller, the network storage controller searches the igroup for the host to see whether the host has access to the logical units. If so, the network storage controller allows the host to use the logical units identified by the igroup.
At times a logical unit requires maintenance, e.g. copying, restoring data, or checking data integrity. Traditionally performing maintenance on a logical unit required off-lining the logical unit, performing maintenance on the logical unit, on-lining the logical unit, and re-configuring the host to use the logical unit. A host mapped to a logical unit will often lose connectivity completely, negatively impacting the host by requiring set-up when the logical unit is back online. In particular, Windows hosts will often establish a different drive letter (E:, H:, J:) for a logical unit once the logical unit is back online. Further, performing maintenance on numerous logical units can be very time consuming and laborious.
Additionally, logical units are sometimes used by virtual operating systems. In virtualization, a virtualized operating system in a virtual environment typically does not allow the mapping of logical units not previously mapped at startup of the virtualized operating system. This creates difficulty in performing host side maintenance; a user is unable to add a logical unit or change the mapping of a logical unit. To perform maintenance, the virtual operating system would have to be shut down in order to connect logical units or change logical units connected to the virtual operating system.